MSSQL Het ALTER statement
Home

MSSQL Het ALTER statement

MSSQL Het ALTER statement

Met het ALTER statement kan je bestaande objecten zoals tabellen in de database wijzigen.

ALTER TABLE

Om een kolom uit een tabel te schrappen gebruiken we het ALTER statement in combinatie met het DROP statement:

-- JI
-- 13 november 2012
-- leren hoe je een tabel object wijzigt
-- Bestandsnaam: BoekenAlterCommentaarDrop.sql
use JefInghelbrecht;
alter table Boeken drop column Commentaar;

Om een kolom toe te voegen maak je gebruik van het ADD en het ALTER statement. Je zou hier de instructie create column verwachten. In SQL gebruik je namelijk het keyword create om een object in de database aan te maken, gevolgd door de clausule column. Dus om een kolom toevoegen gebruik je niet create column maar een eenvoudige add:

-- JI
-- 13 november 2012
-- voeg de kolom commentaar toe, 150 karakters
-- Bestandsnaam: BoekenAlterCommentaarAdd.sql
use JefInghelbrecht;
alter table Boeken add Commentaar nvarchar(150);

Om de eigenschappen te veranderen van een kolom is de syntax in MSSQL Server en MySQL verschillend.

Het is goed om van meet af aan de integriteit van de database te denken.

We gaan ervan uit dat de familienaam moet ingevuld worden. Zelfs al is de auteur onbekend, moet dan zoiets als onbekend worden ingevuld. Een een kolom verplicht te maken voegen we een constraint toe:

In SQL Server:

-- JI
-- 13 november 2012
-- voeg een not null contraint toe op de kolom Familienaam
-- Bestandsnaam:
-- BoekenAlterFamilienaamAlterNotNull.sql
use JefInghelbrecht;
alter table Boeken alter column Familienaam nvarchar(200) not null;

Om kolomnamen te wijzigen kan je in MySQL het ALTER statement gebruiken in combinatie met de CHANGE clausule. De generieke vorm is:

ALTER TABLE tablename CHANGE oldname newname varchar(10) ;

In ons voorbeeld wordt dat:

ALTER TABLE Personen CHANGE Email E-mail varchar(255) ;

Het zou te gemakkellijk geweest zijn als het wijzigigen van objecten in MySQL met het ALTER statement zou kunnen worden uitgevoerd. Maar om de naam van een tabel te wijzigen kunnen we niet het ALTER statement niet gebruiken. Er bestaat daarvoor een RENAME statement. De generieke vorm is. Let op het gebruik van backticks rond de naam van de tabellen. Die zijn verplicht wanneer de naam van de tabel overeenkomt met een gereserveerd woord van MySQL:

RENAME TABLE `oldTableName` TO `newTableName`;

In ons voorbeeld:

RENAME TABLE `Boeken` TO `MijnBoeken`

In MSSQL kan je kolomnamen niet met ALTER wijzigen. Om bijvoorbeeld kolomnamen te wijzigen moet je in MS SQL een stored procedure gebruiken:

EXEC sp_rename 'Personen.Email', 'E-mail', 'COLUMN';
GO
-- JI
-- 13 november 2012
-- kijken of sp_rename met alle mogelijke objecten werkt?
-- bestandsnaam: BoekenSP_RENAME.sql
use A88586JefInghelbrecht
go
-- als je een tabel hernoemt, moet je het type object (derde
-- argument) niet opgeven.
exec
sp_rename 'Boeken', 'Books'
go

JI
2020-01-18 08:02:23